#pragma once

namespace Graphics{
	class RenderTarget{
	public:
		RenderTarget(Texture2DPtr texture, RenderContext *handle):m_texture(texture){}
		virtual ~RenderTarget(){}

		virtual void clear(bool clearRT, bool clearDS, RenderContext *handle) = 0;
		virtual void setRenderTarget(bool clearRT, bool clearDS, RenderContext *handle) = 0;
		virtual void resolveIntoTexture(Texture2DPtr texture, RenderContext *handle) = 0;
		virtual void resolveIntoRenderTarget(boost::shared_ptr<RenderTarget> renderTarget, RenderContext *handle) = 0;

		Texture2DPtr getTexture() { return m_texture; }
	protected:
		Texture2DPtr m_texture;
	};
}

typedef boost::shared_ptr<Graphics::RenderTarget> RenderTargetPtr;